2.1 Dart Kernel

在编译器设计中,通常会引入 intermediate representationIR) 的概念,将编译器按照前端、后端隔离。

在 Dart SDK 中,所使用 IR 被称作 Dart Kernel IR,它是 Dart 语言的中间表示形式。它是一种独立于平台的、结构化的、二进制格式,捕获了 Dart 程序的结构和语义。内核用于 Dart Kernel 的各个编译阶段,包括解析、类型推断、优化和代码生成。

在 Dart SDK 中,由前端编译器(CFE、Flutter 的 frontend_server)将 Dart 代码转为 Dart Kernel


dill 文件

Dart Kernel 文件通常以 .dill 作为后缀。通过 dart compile kernel 可以将源代码编译为 dill 文件,是一个二进制文件,如下所示:

Pasted image 20240725160459.png


Kernel AST

Dart Kernel 是 Dart 代码的抽象语法树,所以又称为 Kernel AST。dill 文件是对语法树的二进制序列化。

DartVM 可以直接运行 Dart Kernal,因此,也可以理解为:Kernel AST 是“在 Dart VM 上运行的二进制文件”。


本文作者:Maeiee

本文链接:2.1 Dart Kernel

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!